//二叉树的中序遍历

function TreeNode(val){
    this.val = val;
    this.left = null;
    this.right = null;
}

function inorder(node) {
    if(!node) return null;
    inorder(node.left);
    console.log(node.val)
    inorder(node.right);
}

// 测试用例1: 空树
console.log("测试空树:");
inorder(null); // 无输出

// 测试用例2: 单节点树
console.log("测试单节点树:");
const root1 = new TreeNode(1);
inorder(root1); // 输出: 1

// 测试用例3: 完全二叉树
console.log("测试完全二叉树:");
const root2 = new TreeNode(1);
root2.left = new TreeNode(2);
root2.right = new TreeNode(3);
root2.left.left = new TreeNode(4);
root2.left.right = new TreeNode(5);
// 树结构:
//     1
//    / \
//   2   3
//  / \
// 4   5
// 中序遍历应该输出: 4, 2, 5, 1, 3
inorder(root2);

// 测试用例4: 不平衡树
console.log("测试不平衡树:");
const root3 = new TreeNode(1);
root3.right = new TreeNode(2);
root3.right.left = new TreeNode(3);
// 树结构:
// 1
//  \
//   2
//  /
// 3
// 中序遍历应该输出: 1, 3, 2
inorder(root3);

// 测试用例5: 递增序列构建的树
console.log("测试递增序列:");
const root4 = new TreeNode(4);
root4.left = new TreeNode(2);
root4.right = new TreeNode(6);
root4.left.left = new TreeNode(1);
root4.left.right = new TreeNode(3);
root4.right.left = new TreeNode(5);
root4.right.right = new TreeNode(7);
// 中序遍历应该输出: 1, 2, 3, 4, 5, 6, 7
inorder(root4);

